home *** CD-ROM | disk | FTP | other *** search
/ Aminet 25 / Aminet 25 (1998)(GTI - Schatztruhe)[!][Jun 1998].iso / Aminet / util / cli / ksc_GrepMem.lha / GrepMem.asm next >
Encoding:
Assembly Source File  |  1998-04-24  |  1.7 KB  |  102 lines

  1. ; GrepMem v1.2 : hunts through memory for (exact) string matches
  2. ; by Kyzer/CSG
  3. ; $VER: GrepMem 1.2 (09.04.98)
  4. ;
  5.     incdir    include:
  6.     include    lvo/exec_lib.i
  7.     include    lvo/dos_lib.i
  8.     include    exec/execbase.i
  9.     include    dos/dos.i
  10.     include    dos/dosasl.i
  11.  
  12. error    MACRO
  13.     IFLT    ERROR_\1 - 127
  14.     moveq    #ERROR_\1,d1
  15.     ELSE
  16.     move.l    #ERROR_\1,d1
  17.     ENDC
  18.     jsr    _LVOSetIoErr(a6)
  19.     ENDM
  20.  
  21. print    MACRO
  22.     lea    \1,a0
  23.     move.l    a0,d1
  24.     IFNC    '\2',''
  25.     lea    \2,a0
  26.     move.l    a0,d2
  27.     ENDC
  28. ;    move.l    dosbase(a5),a6
  29.     jsr    _LVOVPrintf(a6)
  30.     ENDM
  31.  
  32. stackf    MACRO    ; stack_symbol, stackelement_symbol
  33.     IFND    \1
  34. \1    set    0
  35.     ENDC
  36. \1    set    \1-4
  37. \2    equ    \1
  38.     ENDM
  39.  
  40.     stackf    stk, dosbase    ; DOSBase
  41.  
  42.     stackf    stk, padzero    ;
  43.     stackf    stk, endaddr    ; these 4 filled by ReadArgs
  44.     stackf    stk, begaddr    ; ^
  45.     stackf    stk, searchstr    ; | This way up
  46.     stackf    stk, rdargs
  47. args=searchstr
  48.  
  49.     stackf    stk, end    ; end address
  50.     stackf    stk, start    ; start address 
  51.     stackf    stk, address    ; current search address
  52.     stackf    stk, hitcnt    ; number of matches
  53.     stackf    stk, column    ; current printout column
  54. str=address
  55.  
  56.     link    a5,#stk
  57.  
  58.     move.l    4.w,a6
  59.     lea    dosname(pc),a1
  60.     moveq    #37,d0
  61.     jsr    _LVOOpenLibrary(a6)
  62.     move.l    d0,dosbase(a5)
  63.     beq.s    .nodos
  64.     move.l    d0,a6
  65.  
  66.     print    title(pc)
  67.  
  68.     lea    templat(pc),a0
  69.     move.l    a0,d1
  70.     lea    args(a5),a0
  71.     move.l    a0,d2
  72.     clr.l    (a0)+
  73.     clr.l    (a0)+
  74.     clr.l    (a0)+
  75.     clr.l    (a0)+
  76.     moveq    #0,d3
  77.     jsr    _LVOReadArgs(a6)
  78.     move.l    d0,rdargs(a5)
  79.     beq.s    .noargs
  80.  
  81.     bsr.s    Init    ; Init will call Search if appropriate
  82.  
  83.     move.l    rdargs(a5),d1
  84.     jsr    _LVOFreeArgs(a6)
  85. .noargs    jsr    _LVOIoErr(a6)
  86.     move.l    d0,d1
  87.     moveq    #0,d2
  88.     jsr    _LVOPrintFault(a6)
  89.     move.l    a6,a1
  90.     move.l    4.w,a6
  91.     jsr    _LVOCloseLibrary(a6)
  92. .nodos    unlk    a5
  93.     moveq    #0,d0
  94.     rts
  95.  
  96.     include    search.asm
  97.  
  98.     dc.b    '$VER: '
  99. title    dc.b    'GrepMem 1.2 (09.04.98) by Kyzer/CSG',10,0
  100. templat    dc.b    'STRING/A,START,END,PADZERO/S',0
  101. dosname    dc.b    'dos.library',0
  102.